//
//  NSDate+extension.swift
//  日期格式转换测试
//
//  Created by rong on 15/7/13.
//  Copyright © 2015年 rong. All rights reserved.
//

import Foundation

extension NSDate {

    //1.将 “新浪微博”格式 的日期字符串 转换成 日期
    class func sinaDateWithString(string: String) -> NSDate {
    
        //1.源字符串
        //let string = "Fri Jul 10 15:56:29 +0800 2015"
        
        //2.指明源字符串的 格式
        let formatter = NSDateFormatter()
        formatter.dateFormat = "EEE MMM dd HH:mm:ss zzzz yyyy"
        
        //3.设置指定区域   英文 en / 中文 cn
        formatter.locale = NSLocale(localeIdentifier: "en")
        
        return formatter.dateFromString(string) ?? NSDate()
        
        //print(date)
        //结果是 过滤掉 “时区”的 结果，是时区0 的时间
        //打印结果 ： Optional(  2015-07-10 07:56:29 +0000
    }
    
    //返回当前日期的描述信息，格式如下：
    /*
        刚刚(一分钟内)
        X分钟前(一小时内)
        X小时前(当天)
        昨天 HH:mm(昨天)
        MM-dd HH:mm(一年内)
        yyyy-MM-dd HH:mm(更早期)
    */
    func dateDescription() -> String {
    
        //取出当前的日历 － 提供了大量日期计算函数
        let calendar = NSCalendar.currentCalendar()
        
        //判断  sinaDateWithString返回的 日期 NSDate 是否是今天
        if  calendar.isDateInToday(self) {
            
            //计算当前时间  和 对象日期 的秒数差值  单位是 “秒”
            let delta = Int(NSDate().timeIntervalSinceDate(self))
            
            if delta < 60 { //刚刚(一分钟内)
            
                return "刚刚"
            } else if delta < 3600 { //X分钟前(一小时内)
            
                return String(delta/60) + " 分钟前"
            } else {
                
                return String(delta/3600) + " 小时前"
            }
        }
        
        //判断是否是 “昨天”
        var fmtString = "HH:mm"
        if calendar.isDateInYesterday(self) {
            fmtString = "昨天" + fmtString
        } else {
            fmtString = "MM-dd " + fmtString
            
            let components = calendar.components(NSCalendarUnit.Year, fromDate: self, toDate: NSDate(), options: NSCalendarOptions(rawValue: 0))
            
            if components.year != 0 {  //说明跟今天比 已经超过 1年
                fmtString = "yyyy-" + fmtString
            }
        }
        
        let formatter = NSDateFormatter()
        formatter.locale = NSLocale(localeIdentifier: "en")
        formatter.dateFormat = fmtString
        
        return formatter.stringFromDate(self)
    }
}
